/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package la.foton.homebroker.negocio.entidade;

import java.math.BigDecimal;
import java.util.Date;

import la.foton.homebroker.negocio.validador.Validador;
import la.foton.homebroker.negocio.validador.ViolacaoNegocioException;
import la.foton.homebroker.negocio.validador.obrigatoriedade.Obrigatorio;

/**
 * @author luiz
 */
public class Cotacao
{

	@Obrigatorio
	private Acao acao;
	@Obrigatorio
	private Date dataReferencia;
	@Obrigatorio
	private BigDecimal ultima;
	@Obrigatorio
	private BigDecimal abertura;
	@Obrigatorio
	private BigDecimal fechamento;
	@Obrigatorio
	private BigDecimal maxima;
	@Obrigatorio
	private BigDecimal minima;
	@Obrigatorio
	private BigDecimal media;

	public BigDecimal getVariacao()
	{
		return ultima.divide(fechamento).subtract(BigDecimal.ONE).multiply(new BigDecimal("100"));
	}

	public void valida() throws ViolacaoNegocioException
	{
		// TODO: verificar que a ação informada pode ser negociada, ou seja, é existente para negociação.
		Validador.valida(this);
	}

	public Acao getAcao()
	{
		return acao;
	}

	public void setAcao(Acao acao)
	{
		this.acao = acao;
	}

	public Date getDataReferencia()
	{
		return dataReferencia;
	}

	public void setDataReferencia(Date dataReferencia)
	{
		this.dataReferencia = dataReferencia;
	}

	public BigDecimal getUltima()
	{
		return ultima;
	}

	public void setUltima(BigDecimal ultima)
	{
		this.ultima = ultima;
	}

	public BigDecimal getAbertura()
	{
		return abertura;
	}

	public void setAbertura(BigDecimal abertura)
	{
		this.abertura = abertura;
	}

	public BigDecimal getFechamento()
	{
		return fechamento;
	}

	public void setFechamento(BigDecimal fechamento)
	{
		this.fechamento = fechamento;
	}

	public BigDecimal getMaxima()
	{
		return maxima;
	}

	public void setMaxima(BigDecimal maxima)
	{
		this.maxima = maxima;
	}

	public BigDecimal getMinima()
	{
		return minima;
	}

	public void setMinima(BigDecimal minima)
	{
		this.minima = minima;
	}

	public BigDecimal getMedia()
	{
		return media;
	}

	public void setMedia(BigDecimal media)
	{
		this.media = media;
	}

}
